﻿using EasyERP_DAL;
using EasyERP_DAL.Base;
using EasyERP_Model;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EasyERP_BLL.Base
{
    /// <summary>
    /// 往来单位业务逻辑类
    /// </summary>
    public class B_Partner_BLL
    {
        /// <summary>
        /// 声明只读往来单位数据访问类对象
        /// </summary>
        private readonly B_Partner_DAL Partner_DAL = new B_Partner_DAL();

        #region 获取往来单位信息表
        /// <summary>
        /// 获取往来单位信息表
        /// </summary>
        /// <param name="model">往来单位信息实体对象</param>
        /// <returns>往来单位信息表</returns>
        public DataTable Get_B_Partner(B_Partner model)
        {
            try
            {
                return Partner_DAL.Get_B_Partner(model);
            }
            catch (Exception ex)
            {
                B_Message_BLL.MessageCaveat(ex);        //弹出异常对话框
                return null;
            }
        }
        #endregion

        #region 添加往来单位信息
        /// <summary>
        /// 添加往来单位信息
        /// </summary>
        /// <param name="model">往来信息单位实体对象</param>
        /// <returns>返回True：添加成功；返回False：添加失败</returns>
        public bool Insert_B_Partner(B_Partner model)
        {
            if (string.IsNullOrWhiteSpace(model.bp_cd))             //往来单位编号为空
            {
                B_Message_BLL.MessageCaveat("2003");                //弹出提示框
                return false;
            }
            if (string.IsNullOrWhiteSpace(model.bp_full_nm))        //往来单位全称为空
            {
                B_Message_BLL.MessageCaveat("2003");                //弹出提示框
                return false;
            }
            if (string.IsNullOrWhiteSpace(model.bp_nm))             //往来单位简称为空
            {
                B_Message_BLL.MessageCaveat("2003");                //弹出提示框
                return false;
            }
            if (string.IsNullOrWhiteSpace(model.bp_addr))           //往来单位地址为空
            {
                B_Message_BLL.MessageCaveat("2003");                //弹出提示框
                return false;
            }
            if (string.IsNullOrWhiteSpace(model.bp_reper))          //往来单位联系人为空
            {
                B_Message_BLL.MessageCaveat("2003");                //弹出提示框
                return false;
            }
            if (string.IsNullOrWhiteSpace(model.bp_tel))            //往来单位联系电话为空
            {
                B_Message_BLL.MessageCaveat("2003");                //弹出提示框
                return false;
            }
            if (string.IsNullOrWhiteSpace(model.bp_email))          //电子邮箱为空
            {
                B_Message_BLL.MessageCaveat("2003");                //弹出提示框
                return false;
            }
            if (string.IsNullOrWhiteSpace(model.bp_tax))            //往来单位税号为空
            {
                B_Message_BLL.MessageCaveat("2003");                //弹出提示框
                return false;
            }
            if (model.po_flag.ToUpper() == "N" && model.po_flag.ToUpper() == "N")
            {
                B_Message_BLL.MessageCaveat("2006");                //弹出提示框
                return false;
            }
            if (string.IsNullOrWhiteSpace(model.bank_cd))           //银行编号为空
            {
                B_Message_BLL.MessageCaveat("2003");                //弹出提示框
                return false;
            }
            if (string.IsNullOrWhiteSpace(model.bank_acct_no))      //银行账号为空
            {
                B_Message_BLL.MessageCaveat("2003");                //弹出提示框
                return false;
            }
            if (string.IsNullOrWhiteSpace(model.pay_type))          //付款方式为空
            {
                B_Message_BLL.MessageCaveat("2003");                //弹出提示框
                return false;
            }

            //保存前验证数据是否存在
            if (Partner_DAL.Exists(model))                        //存在
            {
                B_Message_BLL.MessageCaveat("1001");                //弹出提示框
                return false;
            }

            try
            {
                return Partner_DAL.Insert_B_Partner(model);
            }
            catch (Exception ex)
            {
                B_Message_BLL.MessageCaveat(ex);
                return false;
            }
        }
        #endregion

        #region 删除往来单位信息
        /// <summary>
        /// 删除往来单位信息
        /// </summary>
        /// <param name="model">往来信息单位实体对象</param>
        /// <returns>返回True：删除成功；返回False：删除失败</returns>
        public bool Delete_B_Partner(B_Partner model)
        {
            //删除前验证数据是否存在
            if (Partner_DAL.Exists(model))                      //要删除的不存在
            {
                //判断采购订单中是否有登记该往来单位信息
                if (Partner_DAL.Exists_Po_dtl(model))
                {
                    B_Message_BLL.MessageCaveat("1010");                //弹出提示框
                    return false;
                }
                //判断销售订单中是否有登记该往来单位信息
                if (Partner_DAL.Exists_So_dtl(model))
                {
                    B_Message_BLL.MessageCaveat("1011");                //弹出提示框
                    return false;
                }
                //判断商品单价中是否有登记该往来单位信息
                if (Partner_DAL.Exists_B_Item_Price(model))
                {
                    B_Message_BLL.MessageCaveat("1012");                //弹出提示框
                    return false;
                }

                try
                {
                    return Partner_DAL.Delete_B_Partner(model);
                }
                catch (Exception ex)
                {
                    B_Message_BLL.MessageCaveat(ex);
                    return false;
                }
            }
            B_Message_BLL.MessageCaveat("1002");                //弹出提示框
            return false;
        }
        #endregion

        #region 修改往来单位信息
        /// <summary>
        /// 修改往来单位信息
        /// </summary>
        /// <param name="model">往来信息单位实体对象</param>
        /// <returns>返回True：修改成功；返回False：修改失败</returns>
        public bool UpDate_B_Partner(B_Partner model)
        {
            //修改前验证数据是否存在
            if (Partner_DAL.Exists(model))                      //要修改的不存在
            {
                try
                {
                    return Partner_DAL.Update_B_Partner(model);
                }
                catch (Exception ex)
                {
                    B_Message_BLL.MessageCaveat(ex);
                    return false;
                }
            }
            B_Message_BLL.MessageCaveat("1003");                //弹出提示框
            return false;
        }
        #endregion
    }
}
